package cn.topcodes.tcsf.admin.service;

import cn.topcodes.tcsf.admin.domain.form.EmailConfig;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Map;

/**
 * Created by Unicorn on 2017/12/23.
 */
public interface EmailService {

    /**
     * 发送测试邮件
     * @param emailConfig   测试邮件服务配置
     */
    void test(EmailConfig emailConfig);

    /**
     * 配置邮件服务
     * @param emailConfig
     */
    @Transactional(readOnly = false, rollbackFor = Exception.class)
    void setEmailConfig(EmailConfig emailConfig);

    /**
     * 获取邮件服务配置
     * @return
     */
    EmailConfig getEmailConfig();

    /**
     * 发送富文本
     * @param catalog     邮件类别
     * @param to          目标邮箱
     * @param subject     主题
     * @param isRichText  是否富文本
     * @param text        内容，支持富文本
     * @param resources   富文本内资源
     * @param attachments 附件列表
     */
    void send(String catalog, String from, String to, String subject, boolean isRichText, String text, Map<String, ClassPathResource> resources, Map<String, FileSystemResource> attachments);

    /**
     * 是否可用
     * @return
     */
    boolean isEnabled();
}
